<?php 
class class_CajaIngresoCustom
{
	private $_db; 
	function __construct()
	{
		$this->config();
	}
	private function config()
	{
		require_once("conexion.php");
		require_once("DataBase.php");
		$this->_db = new DataBase($SERVIDOR,$USUARIO,$PASSWORD,$BASE);
		mysql_query("SET NAMES utf8");
	}
	
	
	
	function method_getMedicos($params, $error)
    {
        if (count($params) != 0) { $error->SetError(JsonRpcError_ParameterMismatch, "Expected 0 parameter; got " . count($params)); return $error; }
        
        $this->_db->setQuery("SELECT dni_usuario as value, usuario as label FROM usuarios WHERE cod_tipo_usuario = '3'");
    	$this->_db->alter();
    	if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
        
		return $this->_db->loadResult();
    }
    function method_getCajaIngresoCustom($params, $error)
    {
    	if (count($params) != 1) { $error->SetError(JsonRpcError_ParameterMismatch, "Expected 1 parameter; got " . count($params)); return $error; }
		
    	$result = array();
    	$medico = "";
    	$INNER_ATENDIDOS = "";
    	$dia = "";
    	$SQL = "";
    	
    	IF ($params[0]->medico != "0")
    	{
    		$medico = " AND turnos.dni_usuario = '" . $params[0]->medico . "' ";
    	}
    	IF ($params[0]->diaDesde != "")
    	{
    		$params[0]->diaDesde = owFunciones::DateToSQL($params[0]->diaDesde);
    		$params[0]->diaHasta = owFunciones::DateToSQL($params[0]->diaHasta);
    		$INNER_ATENDIDOS = " 
    			INNER JOIN pacientes_atendidos ON turnos.cod_turno = pacientes_atendidos.cod_turno
    			INNER JOIN pacientes ON pacientes.dni_paciente = turnos.dni_paciente
    		";
    		$dia = " AND pacientes_atendidos.fecha BETWEEN '" . $params[0]->diaDesde . "' AND  '" . $params[0]->diaHasta . "'";
    	}
    	
		$SQL .= "SELECT
		usuario as medico,
    	CONCAT(pacientes.apellido,', ',pacientes.nombres) AS paciente,
    	planes.descripcion as forma_pago,
    	prestaciones.pm,
    	prestaciones.descripcion as prestacion,
    	turnos_os.plus,
   		turnos_os.importe,
   		IF (turnos.cod_plan=0, 'C', 'P') as tipo
    	FROM turnos_os
    	INNER JOIN nomenclador ON turnos_os.cod_nomenclador = nomenclador.cod_nomenclador
    	INNER JOIN prestaciones ON nomenclador.cod_prestacion = prestaciones.cod_prestacion
    	INNER JOIN turnos ON turnos_os.cod_turno = turnos.cod_turno AND turnos.cod_clinica = '" . $params[0]->cod_clinica . "' " . $INNER_ATENDIDOS . "
    	INNER JOIN planes ON turnos.cod_plan = planes.cod_plan
    	INNER JOIN usuarios ON turnos.dni_usuario = usuarios.dni_usuario
    	WHERE turnos_os.estado IN ('A', 'P', 'C')
    	AND (turnos_os.plus + turnos_os.importe) > 0 " . $medico . " " . $dia . "
		";
    	
    	$this->_db->setQuery($SQL);
    	$this->_db->alter();
    	if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
    	$regs = $this->_db->loadResult();
    	
    	FOREACH ($regs as $reg) {
    		if ($params[0]->tipo_ingreso == "TODOS") {
    			$row = array();
    			array_push($row, $reg->medico);
    			array_push($row, $reg->paciente);
    			array_push($row, $reg->forma_pago);
    			array_push($row, $reg->prestacion);
    			switch($reg->tipo) {
    				case "P":
    					array_push($row, round(($reg->plus),2));
    					array_push($row, "PLUS");
    				break;
    				case "C":
    					if ($reg->pm == "S") {
    						array_push($row, round(($reg->plus+$reg->importe),2));
    						array_push($row, "PARM");
    					} else {
    						array_push($row, round(($reg->plus+$reg->importe),2));
    						array_push($row, "PAR");
    					}
    				break;
    			}
    		} else {
    			switch ($params[0]->tipo_ingreso) {
    				case "PARM":
    					if (($reg->tipo == 'C') && ($reg->pm == 'S')) {
    						$row = array();
    						array_push($row, $reg->medico);
    						array_push($row, $reg->paciente);
    						array_push($row, $reg->forma_pago);
    						array_push($row, $reg->prestacion);
    						array_push($row, round(($reg->plus+$reg->importe),2));
    						array_push($row, "PARM");
    					}
    				break;
    				case "PAR":
    					if (($reg->tipo == 'C') && ($reg->pm == 'N')) {
    						$row = array();
    						array_push($row, $reg->medico);
    						array_push($row, $reg->paciente);
    						array_push($row, $reg->forma_pago);
    						array_push($row, $reg->prestacion);
    						array_push($row, round(($reg->plus+$reg->importe),2));
    						array_push($row, "PAR");
    					}
    				break;
    				case "PLUS":
    					if ($reg->tipo == 'P') {
    						$row = array();
    						array_push($row, $reg->medico);
    						array_push($row, $reg->paciente);
    						array_push($row, $reg->forma_pago);
    						array_push($row, $reg->prestacion);
    						array_push($row, round(($reg->plus),2));
    						array_push($row, "PLUS");
    					}
    				break;
    			}
    		}
    		if (($reg->tipo == 'C') && (($reg->plus+$reg->importe) <= 0)) {
    			$row = null;
    		}
    		
    		if (($reg->tipo == 'P') && ($reg->plus <= 0)) {
    			$row = null;
    		}
    		
    		if ($row) {
    			array_push($result, $row);
    		}
    	}
    	return $result;
    }
}
?>